/**
 * 类装饰器可以添加类的属性和方法
 * 使用装饰器语法需要配置tsconfig:"experimentalDecorator":true
 */

function logClass(constructor: Function) {
  console.log(constructor.name);
}

@logClass
class Person {
  constructor(public name: string) {} 
}

// 类装饰器工厂  返回装饰器的函数。可以接收参数来控制装饰器的行为
function logClassWithParams(message: string) {
  return function (constructor:Function) {
    console.log(constructor.name,message);
  };
}
@logClassWithParams('class Created')
class Car {}
